-- 创建主框架
local frame = CreateFrame("Frame")
frame:RegisterEvent("PLAYER_LOGIN")
frame:RegisterEvent("UNIT_AURA")

-- 事件处理函数
frame:SetScript("OnEvent", function(self, event, ...)
    if event == "PLAYER_LOGIN" then
        -- 玩家登录完成后初始化
        self:PrintPlayerBuffs()
    elseif event == "UNIT_AURA" and (...) == "player" then
        -- 当玩家身上的buff变化时打印（可选）
        -- self:PrintPlayerBuffs()
    end
end)

-- 打印玩家Buff的函数
function frame:PrintPlayerBuffs()
    local buffs = {}

    -- 检查最多40个buff槽位（包括临时性buff）
    for i = 1, 40 do
        -- 获取有益buff (HELPFUL)
        local name, _, _, _, _, _, _, _, _, spellId = UnitAura("player", i, "HELPFUL")
        if not name then break end

        table.insert(buffs, string.format("%s (ID: %d)", name, spellId))
    end

    -- 打印到控制台
    if #buffs > 0 then
        print("===== 玩家当前Buff列表 =====")
        for i, buffInfo in ipairs(buffs) do
            print(i .. ". " .. buffInfo)
        end
        print(string.format("===== 共 %d 个Buff =====", #buffs))
    else
        print("你当前没有任何Buff")
    end
end

-- 添加斜杠命令
SLASH_BUFFPRINTER1 = "/bp"
SlashCmdList["BUFFPRINTER"] = function()
    frame:PrintPlayerBuffs()
end